#ifndef _Queue_H
#define _Queue_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


//#define __DEBUG

#ifdef __DEBUG

#define DEBUG_PRINTF(fmt, args...)    printf("====> %s(%d):%s "#fmt"\r\n", __FILE__, __LINE__, __func__, ##args)

#else

#define DEBUG_PRINTF(fmt, args...)
#endif


#define TRUE    1
#define FALSE   0
#define MAXQSIZE 100 //最大队列长度

typedef int QElemType;

typedef struct
{
    int front;    //头指针
    int rear;     //尾指针
    int datasize; //单数据大小
    int count;    //数据总长度
    void* data;
}qQueue;



typedef enum
{
    SEND_TO_BACK = 0,
    SEND_TO_FRONT,

}qQueue_dirction;

qQueue* QueueCreate(int datasize, int datalen);
int QueueInit(qQueue* queue);
int qQueue_isFull(qQueue* queue);
//int qQueue_insert(qQueue *queue, void *data,int size);
int qQueue_out(qQueue* queue, void* data, int size);
int CopyDataToQueue(qQueue* queue, void* data, int size, int position);

int PushDataToQueue(qQueue* queue, void* data);
int PopDataToQueue(qQueue* queue, void* data);
int QueueIsFull(qQueue* queue);
int QueueIsEmpty(qQueue* queue);
#endif
